#ifndef RETURNHOMEWITHTIMELOOKAHEADALGORITHM_H_
#define RETURNHOMEWITHTIMELOOKAHEADALGORITHM_H_

#include <list>
#include "Request.h"
using namespace std;

class ReturnHomeWithTimeLookaheadAlgorithm
{
	float* actual_coords;
	float* origin;
	float speed;
	float total_road;
	float actual_time;
	int dimensions;
	float delta;
	list<Request> requests;
	list<Request> requests_done;
	void return_to_origin();
	void follow_path_until_time(list<Request>::iterator begin, list<Request>::iterator end, float time);
	list<Request> calculate_offline(list<Request>::iterator begin, list<Request>::iterator end);
public:
	ReturnHomeWithTimeLookaheadAlgorithm(list<Request> requests, int dimensions, float speed, float alpha);
	virtual ~ReturnHomeWithTimeLookaheadAlgorithm();
	void calculate();
};

#endif /*RETURNHOMEWITHTIMELOOKAHEADALGORITHM_H_*/
